---
layout: docs
page_title: Documentation
description: Building Boundary
---

# Building Boundary

Building Boundary from source requires:

- [Go](https://golang.org/dl/). Boundary developers keep current with new
  releases of Go in order to take advantage of new features and to ensure that
  security issues within Go are addressed. If building Boundary yourself, always
  use the latest version and keep current.
- `make` installed
- [Docker](https://docs.docker.com/get-docker/) installed
- Basic development environment (git, xcode if you're on Mac, etc)

1. `$ git clone https://github.com/hashicorp/boundary` or if you're using SSH auth for
   github, `$ git clone git@github.com:hashicorp/boundary`
2. `$ cd boundary`
3. `$ make install`

The first time you run `make install` it will build UI assets, which will take a
long time. After the initial build, you can update those assets to the
currently-pinned version via `make build-ui`.

Once you've built Boundary, the binary will be available at `<repo path>/bin/boundary`. Move this
binary to somewhere in your `$PATH` such as `/usr/local/bin`.

## Cross Platform Build

If you need to cross compile boundary for another OS or architecture, use the [GOOS and GOARCH](https://github.com/hashicorp/boundary/blob/master/scripts/build.sh#L26)
environment variable to set this. Example: `$ GOOS=linux GOARCH=amd64 make install`

For more details, please consult the [Boundary project on GitHub](https://github.com/hashicorp/boundary#build-and-start-boundary-in-dev-mode).

## Troubleshooting

UI assets are built inside a Docker container. If this build step fails, try
increasing memory and swap available to Docker.
